There is a steady demand for increased functionality, reliability, efficiency, through put, and capacity for data communication among computers and peripherals. For instance, in a conventional storage area network (SAN) that couples computers (generally called hosts) to data storage devices (generally called peripherals), the efficiency of programs running on the computers is dramatically affected by the functionality, reliability, efficiency, through put, and capacity (also called band width) of the network.
The storage area network may include network nodes (e.g., routers) to accomplish reliable access to the storage devices by the computers. Data is transported on networks of this type conventionally by messages having source and destination addresses. A network node can modify messages that are routed through it to enable additional functionality beyond providing simple connectivity. Translation of destination addresses is desirable, for example, to implement redundancy, mirroring, archiving, copy on write (e.g., a snapshot service), and journaling. Using destination address translation, application programs performed by the computers may operate on a model of storage devices that does not have a one to one correspondence with physical storage devices on the network. In other words, the network nodes may provide an interface to the computers that supports all functions directed to a virtual storage device by directing functions to one or more physical storage devices. A map of virtual devices to physical devices is typically defined by the storage area network administrator and retained in the memory of a network node. As used herein, the term “message” is used to refer to any unit of data (e.g., frames, packets, etc.) and any data format that may be transmitted via a network between two or more devices or entities communicatively coupled to the network.
The administrator may arrange for the coupling of several ports of each storage device and several ports of each host computer to the network. Generally, increasing the number of ports a device or host can use to access the network consequently increases the reliability, efficiency, through put, and capacity of data communication between computers and peripherals coupled by the network. When services are provided in a network node, there needs to be a corresponding increase in the capability of these network nodes to support this. This is often typically handled by adding more ports within each network node and/or additional network nodes. Existing approaches to supporting network-based services have limitations inherent to the architecture. Network nodes that implement services in a server (e.g., software running on general purpose central processor unit's (CPU's)) are expensive to scale since expansion within the server complex is expensive (e.g., general purpose CPU's cost relatively more than purpose-built port processors) and limited (e.g., can't add very many CPU's, not linear scaling due to other system bottlenecks). This approach has some port-level processing capabilities, but these capabilities are limited to providing network access and does not typically include services functionality. Network nodes that implement services in a switch (e.g. microcode running in port processors) are more limited in port-level functionality and thus use a split-path approach, where certain services operations are performed in port processors while a non-overlapping set is handled by an external system. This approach cannot support existing server-based virtualization software as it typically requires software redesign to separate the functionality into two distinct systems.
FIG. 1 illustrates an example of a prior art SAN incorporating server based network nodes 50a and 50b. Servers 50a and 50b may be any type of computer, for example: a network server or a workstation. Switches 52 represent any type of interconnection network, for example FibreChannel or Ethernet, LAN, Internet, to provide connectivity between the hosts 54 through the servers 50a and 50b and to the disks 56. The hosts may be any type of computer running an application program, for example: network servers, workstations, personal computers or PDAs. The disks 56 may be any type of storage device for storing data. As mentioned above, the servers 50a and 50b represent a SAN bandwidth bottleneck that can only be alleviated by adding more servers, which is a relatively expensive proposition. FIG. 2 illustrates an example of a SAN incorporating switch based network nodes 60a and 60b in place of the servers 50a and 50b of FIG. 1. A server 62 is coupled to the switch-based nodes 60a and 60b to provide data path control functions. These data paths typically provide limited functionality and are incompatible with existing server-based virtualization software.
Thus, what is needed is a system and method that provides improvements in data communication between computers and peripherals. The value of increased functionality, reliability, efficiency, through put, and capacity includes greater return on investment for computer systems and networks including investments in hardware, software, user training, and operator training. This value also includes the value of improved results from application programs running on a host.